其實就是把 margin
跟 padding
打包成元件的 props
方便使用者快速定義元件間距。簡單暴力。
想還原 margin
與 padding
在原生 CSS 中輸入 1 到 4 個數值都能對應的設計,且 padding
與 margin
可共用同一套邏輯,於是有了 getSpace
function
margin/padding: {props}px
number
則視為無效,回傳 0px
.map
加工為 {props}px
後再 .join
回字串;比如傳入 padding={[24, 48]}
時,會透過 .map
得到 ['24px', '48px']
,接著透過 .join
將陣列轉為 24px 48px
字串想要更偷懶的話可以直接把預設的 padding
與 margin
寫進 props
中,可修改檔案 SpaceWrapper.tsx
第 12 行的內容:
// 預設 SpaceWrapper 的間距為 margin: 16px; padding: 24px;
const { children, margin = 16, padding = 24, className, ...rest } = props;
另外目前的程式碼尚不支援原生 CSS 允許使用的 auto
樣式關鍵字,可調整 !args.space.every((arg) => typeof arg === "number")
條件內的程式碼。
要在截稿前做出 MUI system properties 這麼完整的效果還是有點難,但如果只是要滿足排版需求的話,今天的自製元件還算堪用。